{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "# Ch `04`: Concept `03`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "## Logistic regression in higher dimensions"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Set up the imports and hyper-parameters"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import numpy as np\n",
    "import tensorflow as tf\n",
    "import matplotlib.pyplot as plt\n",
    "\n",
    "learning_rate = 0.1\n",
    "training_epochs = 2000"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Define positive and negative to classify 2D data points:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "x1_label1 = np.random.normal(3, 1, 1000)\n",
    "x2_label1 = np.random.normal(2, 1, 1000)\n",
    "x1_label2 = np.random.normal(7, 1, 1000)\n",
    "x2_label2 = np.random.normal(6, 1, 1000)\n",
    "x1s = np.append(x1_label1, x1_label2)\n",
    "x2s = np.append(x2_label1, x2_label2)\n",
    "ys = np.asarray([0.] * len(x1_label1) + [1.] * len(x1_label2))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Define placeholders, variables, model, and the training op:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "X1 = tf.placeholder(tf.float32, shape=(None,), name=\"x1\")\n",
    "X2 = tf.placeholder(tf.float32, shape=(None,), name=\"x2\")\n",
    "Y = tf.placeholder(tf.float32, shape=(None,), name=\"y\")\n",
    "w = tf.Variable([0., 0., 0.], name=\"w\", trainable=True)\n",
    "\n",
    "y_model = tf.sigmoid(-(w[2] * X2 + w[1] * X1 + w[0]))\n",
    "cost = tf.reduce_mean(-tf.log(y_model * Y + (1 - y_model) * (1 - Y)))\n",
    "train_op = tf.train.GradientDescentOptimizer(learning_rate).minimize(cost)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Train the model on the data in a session:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0 0.693147\n",
      "100 0.375964\n",
      "200 0.276061\n",
      "300 0.218569\n",
      "400 0.181875\n",
      "500 0.156599\n",
      "600 0.13817\n",
      "700 0.124143\n"
     ]
    }
   ],
   "source": [
    "with tf.Session() as sess:\n",
    "    sess.run(tf.global_variables_initializer())\n",
    "    prev_err = 0\n",
    "    for epoch in range(training_epochs):\n",
    "        err, _ = sess.run([cost, train_op], {X1: x1s, X2: x2s, Y: ys})\n",
    "        if epoch % 100 == 0:\n",
    "            print(epoch, err)\n",
    "        if abs(prev_err - err) < 0.0001:\n",
    "            break\n",
    "        prev_err = err\n",
    "\n",
    "    w_val = sess.run(w, {X1: x1s, X2: x2s, Y: ys})"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Here's one hacky, but simple, way to figure out the decision boundary of the classifier: "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [],
   "source": [
    "x1_boundary, x2_boundary = [], []\n",
    "with tf.Session() as sess:\n",
    "    for x1_test in np.linspace(0, 10, 20):\n",
    "        for x2_test in np.linspace(0, 10, 20):\n",
    "            z = sess.run(tf.sigmoid(-x2_test*w_val[2] - x1_test*w_val[1] - w_val[0]))\n",
    "            if abs(z - 0.5) < 0.05:\n",
    "                x1_boundary.append(x1_test)\n",
    "                x2_boundary.append(x2_test)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "deletable": true,
    "editable": true
   },
   "source": [
    "Ok, enough code. Let's see some a pretty plot:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": false,
    "deletable": true,
    "editable": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nr9e3OFgAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7f456464cb00>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(x1_boundary, x2_boundary, c='b', marker='o', s=20)\n",
    "plt.scatter(x1_label1, x2_label1, c='r', marker='x', s=20)\n",
    "plt.scatter(x1_label2, x2_label2, c='g', marker='1', s=20)\n",
    "\n",
    "plt.show()"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
